const express = require("express")
const router = express.Router()
const multer = require("multer")
const path = require("path")
const {join} = require("path")
const coverDB = require("../../../../db/album")
const fs = require("fs")


// 判断是否有权限
router.use((req,res,next)=>{
  if(!req.session.userInfo.allowUpdate){
    return res.send({
      code:15,
      mes:"您没有修改权限，请联系超级管理员进行添加"
    })
  }
  next()
})

// 上传cover文件
let coverUpload = multer({
  storage:multer.diskStorage({
    // 文件存储的目录
    destination(req,file,cb){
      cb(null,join(__dirname,"../../../../static/album/cover/"))
    },
    // 文件的名字
    filename(req,file,cb){
      let name = req.session.userInfo._id
      let ext = path.extname(file.originalname)
      req.coverFile = "static"+name+Date.now()+ext
      cb(null,req.coverFile)  //名字
    }
  })
}).single("file") //name名字 elemetUI默认为file

// 修改图片
router.post("/update",async(req,res)=>{
  try {
    coverUpload(req,res,async err=>{
      if(err){
        return res.send({
          code:8,
          mes:"相册上传失败,请刷新后重试"
        })
      }  
      let {_id} = req.body
      let doc = await coverDB.findById(_id)
      // 判断是否存在
      if(!doc){
        // 删除上传的图片
        fs.rm(join(__dirname,"../../../../static"+req.coverFile),
        {recursive:true},err=>{
          if(err) return 
        })
        return res.send({
          code:10,
          mes:"该封面相册已被删除，请刷新后重试"
        })
      }
      // 修改数据库
      await coverDB.findByIdAndUpdate(_id,{
        src:"/album/cover/"+req.coverFile
      })
      // 删除旧文件
      fs.rm(join(__dirname,"../../../../static"+doc.src),{recursive:true},err=>{
        if(err) return
      })
      res.send({
        code:0,
        mes:"相册封面图更新成功"
      }) 
    }) 
  } catch (error) {
    res.send({
      code:5,
      mes:"服务器异常"
    })
  }
})

// 修改标题
router.post("/updateTit",async(req,res)=>{
  try {
    let {_id,title} = req.body
    // 验证封面是否存在
    let doc = await coverDB.findById(_id)
    if(!doc){
      return res.send({
        code:10,
        mes:"该封面相册已被删除，请刷新后重试"
      })
    }
    await coverDB.findByIdAndUpdate(_id,{
      title
    })
    res.send({
      code:0,
      mes:"封面相册更新成功"
    })
  } catch (error) {
    res.send({
      code:5,
      mes:"服务器异常，请稍后再试"
    })
  }
})



module.exports = router